﻿using System.Collections.Generic;

namespace ControlLibrary.ViewModelsInterface;

/// <summary>
///     配置服务接口，定义配置首页初始化参数的方法
/// </summary>
public interface IConfigureService
{
    /// <summary>
    ///     配置首页初始化参数
    /// </summary>
    /// <param name="data">包含配置参数的键值对字典</param>
    void Configure(Dictionary<string, object> data);
}

/// <summary>
///     配置服务扩展类，为对象提供配置方法的扩展
/// </summary>
public static class ConfigureService
{
    /// <summary>
    ///     使用指定配置数据为对象进行配置
    /// </summary>
    /// <param name="service">要配置的对象</param>
    /// <param name="data">包含配置参数的键值对字典</param>
    public static void Configure(this object service, Dictionary<string, object> data)
    {
        // 检查对象是否实现了IConfigureService接口
        if (service is IConfigureService configService)
        {
            // 如果实现了接口，调用其配置方法
            configService.Configure(data);
        }
    }

    /// <summary>
    ///     使用空配置数据为对象进行配置（重载方法）
    /// </summary>
    /// <param name="service">要配置的对象</param>
    public static void Configure(this object service)
    {
        // 调用带参数的Configure方法，传入空字典
        Configure(service, []);
    }
}